<?php
/**
 * @version 1.4
 * @author Misha Klomp
 * 
 * deze file doet:
 * - verbinding maken met DB
 * - de observatie tabel lezen/schrijven/updaten
 * - lijst met van opbservatie ophalen/deleten
 * 
 * hoe werkt dit:
 * - als je de constuctor aanroept met als input een versie ID dan worden alle atributen gevuld met deze info
 * 
 *     $test = new DbActie(15);
 *     
 *     if(!$test->getActieId()){
 *         echo "Niet gevonden.";
 *     } else {
 *         echo $test->getActieId();
 *     }
 * 
 */
require_once '../defs/constants.php';
require_once FILE_DB_DATABASE;

class DbObservatie extends Database{
    
    private $observatie_id = '';
    private $observatie;
    private $observatie_array;
    
        
    public function DbObservatie($id= ''){
    
               
        if (DEBUG_LVL & DEBUG_LVL_CLASS) echo __FILE__ . __LINE__ .': ' . __CLASS__ .'<BR/>';
        
        parent::Database();
        // If Observatie id get versie data
        if (!empty ($id)){
            $this->DbGetObservatieData($id);
            
            return TRUE;
        }
        else {
            $this->reset();
        }
    }
    
    public function save ($observatie){
        
        if ($this->checkString($observatie, 45, 1)) {
            $query = "INSERT INTO `observatie` (`observatie`) VALUES ( '" . mysql_real_escape_string($observatie) . "')";

            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';

            if (!$this->db_mysql_query($query)){
                return FALSE;
            }
            // Udate class attr
            $this->observatie_id = mysql_insert_id();
            $this->observatie = $observatie;
            return TRUE;
        }
        else {
            return FALSE;
        }
        
    }
    
    public function update ($observatie){
        if ($this->checkString($observatie, 45, 1)){
            
            $query = "UPDATE observatie SET observatie = '" . mysql_real_escape_string($observatie) . "' WHERE observatie . observatie_id ='" . mysql_real_escape_string($this->observatie_id) . "'";
            
            if (!$this->db_mysql_query($query)){
                return FALSE;
            }
            
            if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
            
            $this->observatie = $observatie;
            
            return TRUE;
        }
        else {
            return FALSE;
        }
    }
    
    public function delete(){
        
        $query = "DELETE FROM observatie WHERE observatie .observatie_id = '" . mysql_real_escape_string($this->observatie_id) . "'  LIMIT 1 ";
        if (!$this->db_mysql_query($query)){
                return FALSE;
            }

        if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
        
        $this->reset();
    }

    public function getObservatieId(){
        return $this->observatie_id;
    }
    
    public function getObservatie(){
        return $this->observatie;
    }

    private function DbGetObservatieData($id){
        
        $query = mysql_query("SELECT * FROM observatie WHERE observatie_id = '" . mysql_real_escape_string($id) . "' LIMIT 1 ");
        if (!$res = mysql_fetch_object($query)){
            
            $this->reset();
            return FALSE;
        }
        
        $this->observatie_id = $id;
        $this->observatie = $res->observatie;   
        
        if (DEBUG_LVL & DEBUG_LVL_QUERY) echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
    }
    
    public function getObservatieLijst(){
        $return_array = array();
        if (!is_array($this->observatie_array)){
            $query = mysql_query("SELECT * FROM observatie ORDER BY observatie_id ASC");

            if (DEBUG_LVL & DEBUG_LVL_QUERY) echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
            
            while ($res = mysql_fetch_object($query) ){
                $return_array[$res->observatie_id] = $res->observatie;
            }
            
            return $return_array;
        }
        
    }
    
    private function reset(){
        $this->observatie_id = '';
        $this->observatie = '';
    }


    public function __destruct() {
        parent::__destruct();
    }
}

class TestDbObservatie{
    public function TestDbObservatie(){
        $test = new DbObservatie;
        $test->save(test);
        echo 'observatie ID: ' . $test->getObservatieId() . '<br />';
        echo 'observatie: ' . $test->getObservatie() . '<br />';
        $test->update(test2);
        echo 'observatie ID2: ' . $test->getObservatieId() . '<br />';
        echo 'observatie2: ' . $test->getObservatie() . '<br />';
        $test->delete();
    }
}
?>